package com.jrx.anytxn.param.mapper.ext;

import com.jrx.anytxn.common.annotation.ParamTuningAnnotation;
import com.jrx.anytxn.param.entity.PrChannelTable;
import com.jrx.anytxn.param.mapper.base.PrChannelTableMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 渠道接口扩展
 *
 * @author
 * @date 2019/9/27 16:08
 */
public interface ExtPrChannelTableMapper extends PrChannelTableMapper {
    /**
     * 根据渠道ID和租户ID查询
     *
     * @param channelId 渠道ID
     * @param tenantId  租户ID
     * @return com.jrx.anytxn.param.entity.PrChannelTable
     * @author fan.yang
     * date: 2019/10/17 0017 下午 20:17
     */
    PrChannelTable selectByChannelIdAndTenantId(@Param("channelId") String channelId, @Param("tenantId") String tenantId);

    /**
     * 通过channelId，租户ID和status 获取渠道信息
     *
     * @param channelId 渠道ID
     * @param status    状态
     * @param tenantId  租户ID
     * @return com.jrx.anytxn.param.entity.PrChannelTable
     * @author fan.yang
     * date: 2019/10/17 0017 下午 20:17
     */
    PrChannelTable selectByChannelIAndStatus(@Param("channelId") String channelId, @Param("status") String status, @Param("tenantId") String tenantId);

    /**
     * 根据租户ID查询所有
     *
     * @param tenantId 租户ID
     * @return java.util.List<com.jrx.anytxn.param.entity.PrChannelTable>
     * @author fan.yang
     * date: 2019/10/17 0017 下午 20:16
     */
    List<PrChannelTable> selectAllByTenId(@Param("tenantId") String tenantId);

    /**
     * 根据字段是否为空更新
     *
     * @param prChannelTable 渠道实体
     * @return int
     * @author fan.yang
     * date: 2019/10/17 0017 下午 20:16
     */
    @ParamTuningAnnotation
    int updateByPrimaryKeySelectiveAndNotNull(PrChannelTable prChannelTable);

    /**
     * 根据机构号和租户ID查询渠道集合
     *
     * @param orgId    机构号
     * @param tenantId 租户ID
     * @return java.util.List<com.jrx.anytxn.param.entity.PrChannelTable>
     * @author fan.yang
     * date: 2019/10/17 0017 下午 20:16
     */
    List<PrChannelTable> selectChannelListByOrgIdAndTenId(@Param("orgId") String orgId, @Param("tenantId") String tenantId);

    /**
     * 根据渠道和租户ID删除信息
     *
     * @param channelId 渠道
     * @param tenantId  租户ID
     * @return int
     * @author fan.yang
     * date: 2019/10/17 0017 下午 20:15
     */
    @ParamTuningAnnotation
    int deleteByChannelIdAndTenId(@Param("channelId") String channelId, @Param("tenantId") String tenantId);

    List<PrChannelTable> selectAllByTenIdAndPrivateChannel(@Param("tenantId") String tenantId, @Param("privateChannel") String privateChannel);

    /**
     * 查询征信报送的渠道id
     *
     * @param tenantId
     * @param creditReporting
     * @return List
     */
    List<String> selectByCreditReporting(@Param("tenantId") String tenantId, @Param("creditReporting") String creditReporting);
}